// 

// 此处的导入似乎不被混入
import {
	store as uniIdStore,
	// mutations as uniIdMutations
} from '@/uni_modules/uni-id-pages/common/store.js';

import uniStarterConfig from '@/uni-starter.config'
/**
 * 自定义一些常用的变量和方法，混入到页面中，供调用
 * 导入 import commMixinWjf from '@/common/mixin/common-mixin-wjf.js'
 */
export default {
	data() {
		return {
			systemInfo: {},
			uvModelParam: {
				title: '',
				content: '',
				align: 'left',
				confirmText: '确认',
				cancelText: '取消',
				showCancelButton: false
			}
		}
	},
	computed: {
		userInfo() {
			return uniIdStore.userInfo;
		},
		uniStarterConfig() {
			return uniStarterConfig
		},

	},
	onLoad() {
		uni.getSystemInfo({
			success: (res) => {
				Object.assign(this.systemInfo, res)
			}
		})
	},
	/**
	 *
	 */
	methods: {
		/**
		 * 封装uv-toast插件,生成通用信息显示、提示
		 * 传入参数为对象并覆盖默认参数，后期若有更多的参数需求，还可解析原码后再研究
		 * 已在组件部分对文字显示做了定义设置，会根据字数多少采用不同的显示样式,最大程度解决显示难看问题
		 * <uv-toast-wjf ref="uvToastWjf"></uv-toast-wjf>
		 * 调用：this.$uvToastWjf({message: 'test'})
		 */
		$uvToastWjf(param = {}, callback = false) {
			uni.hideLoading()
			if (!param.message) return;
			// param=Object.assign(defaultParam,param)

			this.$refs.uvToastWjf.show({
				...param,
				complete() { // 信息显示结束后的动作
					if (callback) {
						callback()
					}
				}
			})
		},
		/**
		 * uv-modal弹窗二次封装
		 * @param {Object} callback 回调函数
		 * @param {Object} param 参数对象
		 * 
		  <uv-modal ref="uvModal" :title="uvModelParam.title" :content='uvModelParam.content' :align="uvModelParam.align"
		  :confirmText="uvModelParam.confirmText" :cancelText="uvModelParam.cancelText" 
		  :showCancelButton="uvModelParam.showCancelButton" ></uv-modal>
		  
		 */
		$uvModal(param = {}, confirmFun, cancelFun = false) {
			Object.assign(this.uvModelParam, param)
			this.$refs.uvModal.open()
			// 执行点按确认的回调
			this.$refs.uvModal.confirmHandler = () => {
				this.$refs.uvModal.close()
				if (confirmFun){
					confirmFun()
				}
				
			}
			// 执行点按取消的回调
			this.$refs.uvModal.cancelHandler = () => {
				this.$refs.uvModal.close()
				if (cancelFun) {
					cancelFun()
				}

			}
		},
		/**
		 * 定时返回，用于提交成功后，消息显示完成后，跳转其他页面
		 * @param {String} isRefresh 是否刷新上一页数据
		 * @param {Object} time 跳转时间
		 */
		navTimeBack(isRefresh, time = 1500, callback = false) {
			setTimeout(() => {
				if (isRefresh) {
					// try {
					// 	//需要上一个页面定义loadData
					// 	this.getOpenerEventChannel().emit('refreshData')
					// } catch (e) {
					// 	console.log("刷新上一页数据错误");
					// }
				}
				uni.navigateBack({})
				if (callback) {
					callback()
				}
			}, time);
		},
		/**
		 * navigatorTo跳转页面
		 * @param {String} url
		 * @param {Object} item 传递到下一界面的值
		 * @param {Object} options
		 * @param {Boolean} options.login 是否检测登录  
		 * 相当于一个路由管理
		 */
		navTo(url, item) {
			if (!url) {
				return;
			}

			uni.navigateTo({
				url,
				events: {
					// refreshData: () => {
					// 	//一般整页刷新
					// 	this.loadData()
					// },
					// addData: (e) => {
					// 	console.log("mixin addData", e)
					// 	//用于某一项数据的更新
					// 	this.editData(e)
					// }
				},
				fail: () => {
					//改用switch
					uni.switchTab({
						url: url,
						success: () => {
							//分类页面，特殊处理参数
							// if (url.indexOf("index/category") != -1 && url.indexOf("id") != -
							// 	1) {
							// 	let cid = url.substr(url.indexOf("id=") + 3);
							// 	uni.$emit("changeMainCid", cid)
							// 	setTimeout(() => {
							// 		//防止分类没有初始化，点两下也无所谓
							// 		uni.$emit("changeMainCid", cid)
							// 	}, 1000)
							// }
						}
					})
				}
			})
		},

	}
}